home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / Arashi 1.1.1 / source code / For your think c folder / Misc / RamFiles.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-13  |  2.5 KB  |  151 lines  |  [TEXT/KAHL]

  1. /*/
  2.      Project Arashi: RamFiles.c
  3.      Major release: Version 1.1d2, 9/5/95
  4.  
  5.      Last modification: Thursday, October 13, 1994, 12:05
  6.      Created: Friday, October 23, 1992, 16:39
  7.  
  8.      Copyright © 1992-1994, Juri Munkki
  9. /*/
  10.  
  11. #include "RamFiles.h"
  12.  
  13. #ifdef NO_PRECOMPILED_HEADERS
  14. #include <Memory.h>
  15. #include <Errors.h>
  16. #endif
  17.  
  18. short    IncreaseRamFile(
  19.     Handle    theFile,
  20.     long    *realSize,
  21.     long    *logicalSize,
  22.     long    increase)
  23. {    
  24.     increase += increase & 1;    /*    Keep it even!    */
  25.     *logicalSize += increase;
  26.     
  27.     if( *logicalSize <= *realSize )
  28.     {    return 0;
  29.     }
  30.     else
  31.     {    SetHandleSize((Handle) theFile, *realSize+increase);
  32.         *realSize = GetHandleSize(theFile);
  33.         
  34.         if(*logicalSize <= *realSize)
  35.             return 0;
  36.         else
  37.         {    *logicalSize-=increase;
  38.             return memFullErr;
  39.         }
  40.     }
  41. }
  42.  
  43. short    IncreaseByClump(
  44.     Handle    theFile,
  45.     long    *realSize,
  46.     long    *logicalSize,
  47.     long    increase,
  48.     long    clumpSize)
  49. {    
  50.     increase += increase & 1;
  51.     *logicalSize += increase;    /*    Keep it even!    */
  52.     
  53.     if( *logicalSize <= *realSize )
  54.     {    return noErr;
  55.     }
  56.     else
  57.     {    SetHandleSize(theFile, *realSize+increase+clumpSize);
  58.         *realSize = GetHandleSize(theFile);
  59.         
  60.         if(*logicalSize <= *realSize)
  61.         {    return noErr;
  62.         }
  63.         else
  64.         {    SetHandleSize(theFile, *realSize+increase);
  65.             *realSize = GetHandleSize(theFile);
  66.             
  67.             if(*logicalSize <= *realSize)
  68.                 return noErr;
  69.             else
  70.             {    *logicalSize-=increase;
  71.                 return memFullErr;
  72.             }
  73.  
  74.         }
  75.     }
  76. }
  77.  
  78. void    PackRamFile(
  79.     Handle    theFile,
  80.     long    *realSize,
  81.     long    *logicalSize)
  82. {
  83.     SignedByte    state;
  84.     
  85.     state = HGetState(theFile);
  86.     HUnlock(theFile);
  87.     
  88.     SetHandleSize(theFile, *logicalSize);
  89.     *realSize = GetHandleSize(theFile);
  90.     
  91.     HSetState(theFile,state);
  92. }
  93.  
  94. short    OddIncreaseRamFile(
  95.     Handle    theFile,
  96.     long    *realSize,
  97.     long    *logicalSize,
  98.     long    increase)
  99. {    
  100.     *logicalSize += increase;
  101.     
  102.     if( *logicalSize <= *realSize )
  103.     {    return 0;
  104.     }
  105.     else
  106.     {    SetHandleSize(theFile, *realSize+increase);
  107.         *realSize = GetHandleSize(theFile);
  108.         
  109.         if(*logicalSize <= *realSize)
  110.             return 0;
  111.         else
  112.         {    *logicalSize-=increase;
  113.             return memFullErr;
  114.         }
  115.     }
  116. }
  117.  
  118. short    OddIncreaseByClump(
  119.     Handle    theFile,
  120.     long    *realSize,
  121.     long    *logicalSize,
  122.     long    increase,
  123.     long    clumpSize)
  124. {    
  125.     *logicalSize += increase;
  126.     
  127.     if( *logicalSize <= *realSize )
  128.     {    return noErr;
  129.     }
  130.     else
  131.     {    SetHandleSize(theFile, *realSize+increase+clumpSize);
  132.         *realSize = GetHandleSize(theFile);
  133.         
  134.         if(*logicalSize <= *realSize)
  135.         {    return noErr;
  136.         }
  137.         else
  138.         {    SetHandleSize(theFile, *realSize+increase);
  139.             *realSize = GetHandleSize(theFile);
  140.             
  141.             if(*logicalSize <= *realSize)
  142.                 return noErr;
  143.             else
  144.             {    *logicalSize-=increase;
  145.                 return memFullErr;
  146.             }
  147.  
  148.         }
  149.     }
  150. }
  151.